package com.turing.post.organization.util;

import java.math.BigInteger;
import java.util.HashMap;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

/**
 * 商户分支机构
 * 
 * @author zxp
 * @Dec 20, 2012
 */
@Remote
@Local
public interface MerchantBranchDao {
	/**
	 * 根据商户编号主键查询
	 * 
	 * @param merchantBranchNo
	 *            商户机构号
	 * @return MerchantBranch 商户分支机构
	 */
	public MerchantBranch getMerchantBranchByMerchantBranchNo(
			String merchantBranchNo);

	/**
	 * 根据商户号,机构号查询商户分支机构信息
	 * 
	 * @param merchantNo
	 *            商户号
	 * @param merchantBranchNo
	 *            内部或外部机构号
	 * @return
	 */
	public MerchantBranch getMerchantBranchByMerchantTrans(String merchantNo,
			String merchantBranchNo);

	/**
	 * 根据商户名称查询
	 * 
	 * @param merchantBranchName
	 *            商户名称
	 * @return MerchantBranch 商户分支机构
	 */
	public MerchantBranch getMerchantBranchByMerchantBranchName(
			String merchantBranchName);

	/**
	 * 查询总记录数
	 * 
	 * @param webInput
	 *            日志记录对象
	 * @return BigInteger 总记录数
	 */
	public BigInteger getMerchantBranchTotal(PCPSWebInput webInput,
			String merchantBranchNo, String merchantBranchName, String regionNo);

	/**
	 * 分页查询商户分支机构
	 * 
	 * @param webInput
	 *            日志记录对象
	 * @param merchantBranchNo
	 *            商户机构号
	 * @param merchantBranchName
	 *            商户机构名称
	 * @param regionNo
	 *            行政地区号
	 * @param page
	 *            页码
	 * @return 商户分支机构列表
	 */
	public List<MerchantBranch> getMerchantBranchList(PCPSWebInput webInput,
			String merchantBranchNo, String merchantBranchName,
			String regionNo, Integer page);

	/**
	 * 新增商户分支机构
	 * 
	 * @param merchantBranch
	 *            商户分支机构
	 * @throws PCPSApplicationException
	 */
	public void insertMerchantBranch(MerchantBranch merchantBranch)
			throws PCPSApplicationException;

	/**
	 * 修改商户分支机构
	 * 
	 * @param merchantBranch
	 *            商户分支机构
	 * @throws PCPSApplicationException
	 */
	public void updateMerchantBranch(MerchantBranch merchantBranch)
			throws PCPSApplicationException;

	// /**
	// * @树形分层目录判断查询
	// * @param operBranchNo
	// * @return
	// */
	// Integer getMerchantBranchMinMerchantBranchNo(String branchNo);
	// /**
	// * @根据登录用户机构号查询下拉商户分支机构
	// * @param operBranchNo
	// * @return
	// */
	// List<OrganTreeList> getMerchantBranchListByMerchantBranchNo(
	// String branchNo, Integer minLen);

	/**
	 * 根据商户号查询商户分支机构下拉树
	 * 
	 * @param merchantNo
	 *            商户号
	 * @return List 商户分支机构列表
	 */
	public List<OrganTreeList> getMerchantBranchListByMerchantNo(
			String merchantNo);

	public HashMap<String, String> getMerchantMapListByMerchantNo(String icNo);

	 /**
	 * 根据商户号查询商户分支机构
	 *
	 * @param merchantNo
	 * 商户号
	 * @return List 商户分支机构列表
	 */
	 public List<Object[]> getMerchantBranchByMerchantNo(String merchantNo);
	 
	 /**
	  * 根据条件查询商户分支机构
	  * @param merchantNo 商户号
	  * @param merchantBranchNo 商户分支机构号
	  * @param merchantBranchName 商户分支机构名称
	  * @param page 分页页面
	  * @return
	  */
	 public List<MerchantBranch> getMerchantBranchByCondition(String merchantNo, String merchantBranchNo, String merchantBranchName, Integer page);
	 
	 /**
	  * 根据条件查询商户分支机构数量
	  * @param merchantNo 商户号
	  * @param merchantBranchNo 商户分支机构号
	  * @param merchantBranchName 商户分支机构名称
	  * @return
	  */
	 public BigInteger getMerchantBranchByConditionTotal(String merchantNo, String merchantBranchNo, String merchantBranchName);

	 public String getAutoMerchantBranchSeqNo(String mrchBranchNo, String regionNo);
}
